Whois parsing fixes

James Peret 10 years ago
parent
commit
7f7ccd4d74
2 changed files with 37 additions and 29 deletions
  1. 36 28
      json_parser.rb
  2. 1 1
      main.rb

+ 36 - 28
json_parser.rb

@@ -3,24 +3,15 @@ require 'ostruct'
3 3
 
4 4
 class WhoisParser
5 5
 
6
-    def parse(data, whois_lookup, url)
6
+    def parse(data, whois_lookup, url, raw, dev)
7 7
 
8 8
       @parsed_data = Hash.new
9 9
 
10
-      domain_type = url.split(".").last
11
-
12 10
       # check if the domain is registered
13
-      if data["registered?"] == nil
14
-        if check_domain_availability(data, whois_lookup)
15
-          data["registered?"] = true
16
-          data["available?"] = false
17
-        else
18
-          data["registered?"] = false
19
-          data["available?"] = true
20
-        end
21
-      end
11
+      data = check_domain_availability(data, whois_lookup)
22 12
 
23
-      if data["registered?"]
13
+      if data["registered?"] && !dev
14
+        domain_type = url.split(".").last
24 15
         case domain_type
25 16
         when "br"
26 17
           parserBr(data, whois_lookup, url)
@@ -39,10 +30,13 @@ class WhoisParser
39 30
       @parsed_data["registered?"] = data["registered?"]
40 31
       # Available?
41 32
       @parsed_data["available?"] = data["available?"]
42
-      # Parsed whois lookup data
43
-      #@parsed_data["whois_lookup"] = data
44
-      # Raw whois lookup data
45
-      #@parsed_data["raw"] = whois_lookup.to_s
33
+
34
+      if raw
35
+        # Parsed whois lookup data
36
+        @parsed_data["whois_lookup"] = data
37
+        # Raw whois lookup data
38
+        @parsed_data["raw"] = whois_lookup.to_s
39
+      end
46 40
 
47 41
       return JSON.pretty_generate(@parsed_data)
48 42
     end
@@ -136,26 +130,40 @@ class WhoisParser
136 130
     end
137 131
 
138 132
     def spliter(data, split_char = "\r")
139
-      if data.class == Array
140
-        if data.first.class == Array
141
-          clean_data = data.first.first.split(split_char).first.strip
133
+      clean_data = ""
134
+      if data != nil
135
+        if data.class == Array
136
+          if data.first.class == Array
137
+            if data.first.first != nil
138
+              clean_data = data.first.first.split(split_char).first.strip
139
+            end
140
+          else
141
+            if data.first != nil
142
+              clean_data = data.first.split(split_char).first.strip
143
+            end
144
+          end
142 145
         else
143
-          clean_data = data.first.split(split_char).first.strip
146
+          clean_data = data.split(split_char).first.strip
144 147
         end
145
-      else
146
-        clean_data = data.split(split_char).first.strip
147 148
       end
148 149
       return clean_data
149 150
     end
150 151
 
151 152
     def check_domain_availability(data, whois_lookup)
152
-      data1 = whois_lookup.to_s.scan(/No\smatch\sfor/).first
153
-      data2 = whois_lookup.to_s.scan(/domain\snot\sfound/).first
154
-      if data1 == nil || data2 == nil
155
-        return true
153
+      data1 = whois_lookup.to_s.scan(/(No\smatch\sfor\s)/i).first
154
+      data2 = whois_lookup.to_s.scan(/(domain\snot\sfound)/i).first
155
+      data3 = whois_lookup.to_s.scan(/(release\sprocess:\swaiting)/i).first
156
+      if data3 != nil
157
+        data["registered?"] = false
158
+        data["available?"] = false
159
+      elsif data1 == nil && data2 == nil
160
+        data["registered?"] = true
161
+        data["available?"] = false
156 162
       else
157
-        return false
163
+        data["registered?"] = false
164
+        data["available?"] = true
158 165
       end
166
+      return data
159 167
     end
160 168
 
161 169
 end

+ 1 - 1
main.rb

@@ -87,7 +87,7 @@ get '/lookup.json' do
87 87
     #cache_for_day
88 88
     parser = WhoisParser.new
89 89
     data = whois_lookup.to_h
90
-    parser.parse(data, whois_lookup, params[:url])
90
+    parser.parse(data, whois_lookup, params[:url], params[:raw], params[:dev])
91 91
   rescue Exception => e
92 92
     @error = e
93 93
     { :error => @error }.to_json